home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1996 March / EnigmA AMIGA RUN 05 (1996)(G.R. Edizioni)(IT)[!][issue 1996-03][Skylink CD IV].iso / earcd / ear / mui23dev.lha / MUI / Developer / Autodocs / MUI_Notify.doc < prev    next >
Text File  |  1994-12-23  |  19KB  |  646 lines

  1. TABLE OF CONTENTS
  2.  
  3. Notify.mui/Notify.mui
  4. Notify.mui/MUIM_CallHook
  5. Notify.mui/MUIM_FindUData
  6. Notify.mui/MUIM_GetUData
  7. Notify.mui/MUIM_KillNotify
  8. Notify.mui/MUIM_MultiSet
  9. Notify.mui/MUIM_NoNotifySet
  10. Notify.mui/MUIM_Notify
  11. Notify.mui/MUIM_Set
  12. Notify.mui/MUIM_SetAsString
  13. Notify.mui/MUIM_SetUData
  14. Notify.mui/MUIM_WriteLong
  15. Notify.mui/MUIM_WriteString
  16. Notify.mui/MUIA_AppMessage
  17. Notify.mui/MUIA_HelpFile
  18. Notify.mui/MUIA_HelpLine
  19. Notify.mui/MUIA_HelpNode
  20. Notify.mui/MUIA_NoNotify
  21. Notify.mui/MUIA_Revision
  22. Notify.mui/MUIA_UserData
  23. Notify.mui/MUIA_Version
  24. Notify.mui/Notify.mui
  25.  
  26.     Notify class is superclass of all other MUI classes.
  27.     It's main purpose is to handle MUI's notification
  28.     mechanism, but it also contains some other methods
  29.     and attributes useful for every object.
  30. Notify.mui/MUIM_CallHook
  31.  
  32.     NAME
  33.     MUIM_CallHook (V4 )
  34.  
  35.     SYNOPSIS
  36.     DoMethod(obj,MUIM_CallHook,struct Hook *Hook, ULONG param1, /* ... */);
  37.  
  38.     FUNCTION
  39.     Call a standard amiga callback hook, defined by a Hook
  40.     structure. Together with MUIM_Notify, you can easily
  41.     bind hooks to buttons, your hook will be called when
  42.     the button is pressed.
  43.  
  44.     The hook will be called with a pointer to the hook
  45.     structure in a0, a pointer to the calling object in a2
  46.     and a pointer to the first parameter in a1.
  47.  
  48.     INPUTS
  49.     Hook       pointer to a struct Hook.
  50.     param1,... zero or more parameters. The hook function will
  51.                receive a pointer to the first parameter in
  52.                register a1.
  53.  
  54.     EXAMPLE
  55.  
  56.     standalone:
  57.  
  58.     DoMethod(obj,MUIM_CallHook,&hookstruct,13,42,"foobar","barfoo");
  59.  
  60.     within a notification statement:
  61.  
  62.     DoMethod(propobj,MUIM_Notify,MUIA_Prop_First,MUIV_EveryTime,
  63.              propobj,3,MUIM_CallHook,&prophook,MUIV_TriggerValue);
  64.  
  65.     prophook will be called every time the knob is moving and gets
  66.     a pointer to the knobs current level in a1.
  67. Notify.mui/MUIM_FindUData
  68.  
  69.     NAME
  70.     MUIM_FindUData (V8 )
  71.  
  72.     SYNOPSIS
  73.     DoMethod(obj,MUIM_FindUData,ULONG udata);
  74.  
  75.     FUNCTION
  76.     This method tests if the MUIA_UserData of the object
  77.     contains the given <udata> and returns the object
  78.     pointer in this case.
  79.  
  80.     Although this is not very useful for single objects,
  81.     performing this method on objects that handle children
  82.     can become very handy. In this case, all the children
  83.     (any maybe their children) are tested against <udata>
  84.     and the first matching object is returned.
  85.  
  86.     This method is especially useful if you created your
  87.     menu tree with a NewMenu structure and you want to
  88.     find the object pointer for a single menu item.
  89.  
  90.     INPUTS
  91.     udata - userdata to look for.
  92.  
  93.     RESULT
  94.     A pointer to the first object with the specified user data
  95.     or NULL if no object is found.
  96.  
  97.     NOTES
  98.     If you have many objects in your application, MUIM_FindUData
  99.     may take quite long. You can limit the amount of time
  100.     by performing the method not on the application but on the
  101.     window or even on the group/family your object is placed in.
  102.  
  103.     SEE ALSO
  104.     MUIM_GetUData, MUIM_SetUData
  105. Notify.mui/MUIM_GetUData
  106.  
  107.     NAME
  108.     MUIM_GetUData (V8 )
  109.  
  110.     SYNOPSIS
  111.     DoMethod(obj,MUIM_GetUData,ULONG udata, ULONG attr, ULONG *storage);
  112.  
  113.    FUNCTION
  114.     This method tests if the MUIA_UserData of the object
  115.     contains the given <udata> and gets <attr> to
  116.     <storage> for itself in this case.
  117.  
  118.     Although this is not very useful for single objects,
  119.     performing this method on objects that handle children
  120.     can become very handy. In this case, all the children
  121.     (any maybe their children) are searched against <udata>
  122.     and the first matching objects will be asked for the
  123.     specified attribute.
  124.  
  125.     INPUTS
  126.     udata   - userdata to look for.
  127.     attr    - attribute to get.
  128.     storage - place to store the attribute.
  129.  
  130.     NOTES
  131.     If you have many objects in your application, MUIM_GetUData
  132.     may take quite long. You can limit the amount of time
  133.     by performing the method not on the application but on the
  134.     window or even on the group/family your objects are place in.
  135.  
  136.     SEE ALSO
  137.     MUIM_SetUData, MUIM_FindUData
  138. Notify.mui/MUIM_KillNotify
  139.  
  140.     NAME
  141.     MUIM_KillNotify (V4 )
  142.  
  143.     SYNOPSIS
  144.     DoMethod(obj,MUIM_KillNotify,ULONG TrigAttr);
  145.  
  146.     FUNCTION
  147.     MUIM_KillNotify kills previously given notifications on specific 
  148.     attributes.
  149.  
  150.     INPUTS
  151.     TrigAttr - Attribute for which the notify was specified. If you
  152.                set up more than one notify for an attribute, only
  153.                the first one will be killed.
  154.  
  155.     EXAMPLE
  156.     DoMethod(button,MUIM_KillNotify,MUIA_Pressed);
  157.  
  158.     SEE ALSO
  159.     MUIM_Notify
  160. Notify.mui/MUIM_MultiSet
  161.  
  162.     NAME
  163.     MUIM_MultiSet (V7 )
  164.  
  165.     SYNOPSIS
  166.     DoMethod(obj,MUIM_MultiSet,ULONG attr, ULONG val, APTR obj, /* ... */);
  167.  
  168.     FUNCTION
  169.     Set an attribute for multiple objects.
  170.     Receiving an attribute/value pair and a list of objects,
  171.     this method sets the new value for all the objects in the list.
  172.     This is especially useful for disabling/enabling lots of
  173.     objects with one singe function call.
  174.  
  175.     The object that executes this method isn't affected!
  176.  
  177.     Note: This method was implemented in version 7 of notify class.
  178.  
  179.     INPUTS
  180.     attr     attribute to set.
  181.     value    new value for the attribute.
  182.     obj, ... list of MUI objects, terminated with a NULL pointer.
  183.  
  184.     EXAMPLE
  185.     /* disable all the address related gadgets... */
  186.  
  187.     DoMethod(xxx, MUIM_MultiSet, MUIA_Disabled, TRUE,
  188.        ST_Name, ST_Street, ST_City, ST_Country, ST_Phone, NULL);
  189.  
  190.     /* note that the xxx object doesn't get disabled! */
  191.  
  192.     SEE ALSO
  193.     MUIM_Set, MUIM_Notify
  194. Notify.mui/MUIM_NoNotifySet
  195.  
  196.     NAME
  197.     MUIM_NoNotifySet (V9 )
  198.  
  199.     SYNOPSIS
  200.     DoMethod(obj,MUIM_NoNotifySet,ULONG attr, char *format, ULONG val, /* ... */);
  201.  
  202.     FUNCTION
  203.     Acts like MUIM_Set but doesn't trigger any notification.
  204.     This can become useful to avoid deadlocks with bi-directional
  205.     connections.
  206.  
  207.     INPUTS
  208.     attr  attribute you want to set.
  209.     val   value to set the attribute to.
  210.  
  211.     EXMAPLE
  212.     DoMethod(editor,MUIM_Notify,EDIT_Top,MUIV_EveryTime,
  213.        sbar,3,MUIM_NoNotifySet,MUIA_Prop_First,MUIV_TriggerValue);
  214.  
  215.     DoMethod(sbar,MUIM_Notify,MUIA_Prop_First,MUIV_EveryTime,
  216.        editor,3,MUIM_NoNotifySet,EDIT_Top,MUIV_TriggerValue);
  217.  
  218.     SEE ALSO
  219.     MUIM_Set
  220. Notify.mui/MUIM_Notify
  221.  
  222.     NAME
  223.     MUIM_Notify (V4 )
  224.  
  225.     SYNOPSIS
  226.     DoMethod(obj,MUIM_Notify,ULONG TrigAttr, ULONG TrigVal, APTR DestObj, ULONG FollowParams, /* ... */);
  227.  
  228.     FUNCTION
  229.     Add a notification event handler to an object. Notification
  230.     is essential for every MUI application.
  231.  
  232.     A notification statement consists of a source object,
  233.     an attribute/value pair, a destination object and a
  234.     notification method. The attribute/value pair belongs
  235.     to the source object and determines when the notification
  236.     method will be executed on the destination object.
  237.  
  238.     Whenever the source object gets the given attribute set to
  239.     the given value (this can happen because of the user
  240.     pressing some gadgets or because of your program explicitly
  241.     setting the attribute with SetAttrs()), the destination
  242.     object will execute the notification method.
  243.  
  244.     With some special values, you can trigger the notification
  245.     every time the attribute is changing. In this case, you
  246.     can include the triggering attributes value within the
  247.     notification method. See below.
  248.  
  249.     One big problem with notification are endless loops.
  250.     Imagine you have a prop gadget and want to show its
  251.     state with a gauge object. You connect MUIA_Prop_First
  252.     with MUIA_Gauge_Max and everything is fine, the gauge
  253.     gets updated when the user drags around the gadget. On
  254.     the other hand, if your program sets the gauge to a new
  255.     value, you might want your prop gadget to immediately
  256.     show this change and connect MUIA_Gauge_Max width
  257.     MUIA_Prop_First. Voila, a perfect endless loop.
  258.  
  259.     To avoid these conditions, MUI always checks new
  260.     attribute values against the current state and
  261.     cancels notification when both values are equal.
  262.     Thus, setting MUIA_Prop_First to 42 if the prop
  263.     gadgets first position is already 42 won't trigger
  264.     any notification event.
  265.  
  266.     INPUTS
  267.     TrigAttr     attribute that triggers the notification.
  268.  
  269.     TrigValue    value that triggers the notification. The
  270.                  special value MUIV_EveryTime makes MUI execute
  271.                  the notification method every time when
  272.                  TrigAttr changes. In this case, the special
  273.                  value MUIV_TriggerValue in the notification
  274.                  method will be replaced with the value
  275.                  that TrigAttr has been set to. You can use
  276.                  MUIV_TriggerValue up to four times in one
  277.                  notification method. Since version 8 of
  278.                  muimaster.library, you can also use
  279.                  MUIV_NotTriggerValue here. In this case,
  280.                  MUI will replace TRUE values with FALSE
  281.                  and FALSE values with TRUE. This
  282.                  can become quite useful when you try to set
  283.                  "negative" attributes like MUIA_Disabled.
  284.  
  285.     DestObj      object on which to perform the notification
  286.                  method. Either supply a valid object pointer or
  287.                  one of the following special values (V10) which
  288.                  will be resolved at the time the event occurs:
  289.                  MUIV_Notify_Self        - notifies the object
  290.                                            itself.
  291.                  MUIV_Notify_Window      - notifies the object's
  292.                                            parent window.
  293.                  MUIV_Notify_Application - notifies the object's
  294.                                            application.
  295.  
  296.     FollowParams number of following parameters. If you e.g.
  297.                  have a notification method with three parts
  298.                  (maybe MUIM_Set,attr,val), you have to set
  299.                  FollowParams to 3. This allows MUI to copy
  300.                  the complete notification method into a
  301.                  private buffer for later use.
  302.  
  303.     ...          following is the notification method.
  304.  
  305.     EXAMPLE
  306.  
  307.     /*
  308.     ** Every time when the user releases a button
  309.     ** (and the mouse is still over it), the button object
  310.     ** gets its MUIA_Pressed attribute set to FALSE.
  311.     ** Thats what a program can react on with notification,
  312.     ** e.g. by openening another window.
  313.     */
  314.  
  315.     DoMethod(buttonobj,MUIM_Notify,
  316.        MUIA_Pressed, FALSE,                /* attribute/value pair */
  317.        windowobj,                          /* destination object   */
  318.        3,                                  /* 3 following words    */
  319.        MUIM_Set, MUIA_Window_Open, TRUE);  /* notification method  */
  320.  
  321.     /*
  322.     ** Lets say we want to show the current value of a
  323.     ** prop gadget somewhere in a text field:
  324.     */
  325.  
  326.     DoMethod(propobj,MUIM_Notify,      /* notification is triggered   */
  327.        MUIA_Prop_First, MUIV_EveryTime /* every time the attr changes */
  328.        textobj                         /* destination object */
  329.        4,                              /* 4 following words  */
  330.        MUIM_SetAsString, MUIA_Text_Contents,
  331.        "value is %ld !", MUIV_TriggerValue);
  332.        /* MUIV_TriggerValue will be replaced with the
  333.           current value of MUIA_Prop_First */
  334.  
  335.     /*
  336.     ** Inform our application when the user hits return
  337.     ** in a string gadget:
  338.     */
  339.  
  340.     DoMethod(stringobj,MUIM_Notify,
  341.        MUIA_String_Acknowledge, MUIV_EveryTime,
  342.        MUIV_Notify_Application, 2, MUIM_Application_ReturnID, ID_FOOBAR);
  343. Notify.mui/MUIM_Set
  344.  
  345.     NAME
  346.     MUIM_Set (V4 )
  347.  
  348.     SYNOPSIS
  349.     DoMethod(obj,MUIM_Set,ULONG attr, ULONG val);
  350.  
  351.     FUNCTION
  352.     Set an attribute to a value. Normally, you would set
  353.     attributes with intuition.library SetAttrs() or with
  354.     the OM_SET method as with any other boopsi objects.
  355.     But since these calls need a complete tag list, not
  356.     just a single attribute/value pair, they are not
  357.     useful within a MUIM_Notify method.
  358.  
  359.     INPUTS
  360.     attr  attribute you want to set.
  361.     val   value to set the attribute to.
  362.  
  363.     EXMAPLE
  364.     DoMethod(strobj,MUIM_Set,MUIA_String_Contents,"foobar");
  365.     and
  366.     SetAttrs(strobj,MUIA_String_Contents,"foobar",TAG_DONE);
  367.     are equal.
  368.  
  369.     SEE ALSO
  370.     MUIM_SetAsString, MUIM_Notify, MUIM_NoNotifySet
  371. Notify.mui/MUIM_SetAsString
  372.  
  373.     NAME
  374.     MUIM_SetAsString (V4 )
  375.  
  376.     SYNOPSIS
  377.     DoMethod(obj,MUIM_SetAsString,ULONG attr, char *format, ULONG val, /* ... */);
  378.  
  379.     FUNCTION
  380.     Set a (text kind) attribute to a string. This can be useful
  381.     if you want to connect a numeric attribute of an object with
  382.     a text attribute of another object.
  383.  
  384.     INPUTS
  385.     attr    attribute to set.
  386.     format  C like formatting string, remember to use "%ld" !
  387.     val,... one or more paremeters for the format string.
  388.  
  389.     EXAMPLE
  390.  
  391.     stand alone:
  392.  
  393.     DoMethod(txobj,MUIM_SetAsString,MUIA_Text_Contents,
  394.              "My name is %s and I am %ld years old.",name,age);
  395.  
  396.     within a notification statement:
  397.  
  398.     DoMethod(propobj,MUIM_Notify,MUIA_Prop_First,MUIV_EveryTime,
  399.              txobj,4,MUIM_SetAsString,MUIA_Text_Contents,
  400.              "prop gadget shows %ld.",MUIV_TriggerValue);
  401.  
  402.     SEE ALSO
  403.     MUIM_Set, MUIM_Notify
  404. Notify.mui/MUIM_SetUData
  405.  
  406.     NAME
  407.     MUIM_SetUData (V8 )
  408.  
  409.     SYNOPSIS
  410.     DoMethod(obj,MUIM_SetUData,ULONG udata, ULONG attr, ULONG val);
  411.  
  412.    FUNCTION
  413.     This method tests if the MUIA_UserData of the object
  414.     contains the given <udata> and sets <attr> to
  415.     <val> for itself in this case.
  416.  
  417.     Altough this is not very useful for single objects,
  418.     performing this method on objects that handle children
  419.     can become very handy. In this case, all the children
  420.     (any maybe their children) are tested against <udata>
  421.     and all matching objects will get the attribute set.
  422.  
  423.     If you e.g. want to clear several string gadgets in
  424.     your applciation at once, you simply give them the
  425.     same MUIA_UserData and use
  426.  
  427.     DoMethod(app,MUIM_SetUData,MyUDATA,MUIA_String_Contents,NULL);
  428.  
  429.     INPUTS
  430.     udata - userdata to look for.
  431.     attr  - attribute to set.
  432.     val   - value to set attribute to.
  433.  
  434.     NOTES
  435.     If you have many objects in your application, MUIM_SetUData
  436.     may take quite long. You can limit the amount of time
  437.     by performing the method not on the application but on the
  438.     window or even on the group your gadgets are place in.
  439.  
  440.     SEE ALSO
  441.     MUIM_GetUData, MUIM_FindUData
  442. Notify.mui/MUIM_WriteLong
  443.  
  444.     NAME
  445.     MUIM_WriteLong (V6 )
  446.  
  447.     SYNOPSIS
  448.     DoMethod(obj,MUIM_WriteLong,ULONG val, ULONG *memory);
  449.  
  450.     FUNCTION
  451.     This method simply writes a longword somewhere to memory.
  452.     Although this seems quite useless, it might become handy
  453.     if used within a notify statement. For instance, you could
  454.     easily connect the current level of a slider with some
  455.     member of your programs data structures.
  456.  
  457.     INPUTS
  458.     val    - value to write
  459.     memory - location to write the value to
  460.  
  461.     EXAMPLE
  462.  
  463.     /* Let the slider automagically write its level to a variable */
  464.  
  465.     static LONG level;
  466.  
  467.     DoMethod(slider,MUIM_Notify,MUIA_Slider_Level,MUIV_EveryTime,
  468.        slider,3,MUIM_WriteLong,MUIV_TriggerValue,&level);
  469.  
  470.     SEE ALSO
  471.     MUIM_WriteString, MUIM_Notify
  472. Notify.mui/MUIM_WriteString
  473.  
  474.     NAME
  475.     MUIM_WriteString (V6 )
  476.  
  477.     SYNOPSIS
  478.     DoMethod(obj,MUIM_WriteString,char *str, char *memory);
  479.  
  480.     FUNCTION
  481.     This method simply copies a string somewhere to memory.
  482.     Although this seems quite useless, it might become handy
  483.     if used within a notify statement. For instance, you could
  484.     easily connect the current contents of a string gadget
  485.     with some member of your programs data structures.
  486.  
  487.     Note: The string is copied with strcpy(), you must assure
  488.               that the destination points to enough memory.
  489.  
  490.     INPUTS
  491.     str    - string to copy
  492.     memory - location to write the value to
  493.  
  494.     EXAMPLE
  495.  
  496.     static char buffer[256];
  497.  
  498.     DoMethod(string,MUIM_Notify,MUIA_String_Contents,MUIV_EveryTime,
  499.        string,3,MUIM_WriteString,MUIV_TriggerValue,buffer);
  500.  
  501.     SEE ALSO
  502.     MUIM_WriteLong, MUIM_Notify
  503. Notify.mui/MUIA_AppMessage
  504.  
  505.     NAME
  506.     MUIA_AppMessage -- (V5 ) [..G], struct AppMessage *
  507.  
  508.     FUNCTION
  509.     When your window is an AppWindow, i.e. you have set the
  510.     MUIA_Window_AppWindow attribute to TRUE, you will be able
  511.     to get AppMessages by listening to MUIA_AppMessage.
  512.     Whenever an AppMessage arrives, this attribute will
  513.     be set to a pointer to that message.
  514.  
  515.     MUIA_AppMessage is object specific. You can e.g. set up
  516.     different notifications for different objects in your window,
  517.     they will only get exectued when icons are dropped over the
  518.     specific object.
  519.  
  520.     If you wait on MUIA_AppMessage with a window object, your
  521.     notify will always get executed when icons are dropped on
  522.     the window.
  523.  
  524.     Notes:
  525.  
  526.     - You should use the MUIM_CallHook method to call a
  527.       hook function when an AppMessage arrives (see below).
  528.       The pointer to the AppMessage is valid only as long as 
  529.       the notification method is executed.
  530.  
  531.     - AppWindows are only possible on the workench screen.
  532.  
  533.  
  534.     EXAMPLE
  535.  
  536.     /* Call the AppMsgHook when an icon is dropped on a listview */
  537.  
  538.     DoMethod(lvobj,MUIM_Notify,MUIA_AppMessage,MUIV_EveryTime,
  539.              lvobj,3,MUIM_CallHook,&AppMsgHook,MUIV_TriggerValue);
  540.  
  541.     /* Call the AppMsgHook when an icon is dropped on the window */
  542.  
  543.     DoMethod(winobj,MUIM_Notify,MUIA_AppMessage,MUIV_EveryTime,
  544.              winobj,3,MUIM_CallHook,&AppMsgHook,MUIV_TriggerValue);
  545.  
  546.     SEE ALSO
  547.     MUIA_Window_AppWindow, MUIA_Application_DropObject, MUIM_CallHook
  548. Notify.mui/MUIA_HelpFile
  549.  
  550.     NAME
  551.     MUIA_HelpFile -- (V4 ) [ISG], STRPTR (OBSOLETE)
  552.  
  553.     FUNCTION
  554.     Since muimaster.library V8, this attribute is obsolete and
  555.     replaced by MUIA_Application_HelpFile.
  556.  
  557.     SEE ALSO
  558.     MUIA_Application_HelpFile, MUIA_HelpNode, MUIA_HelpLine
  559. Notify.mui/MUIA_HelpLine
  560.  
  561.     NAME
  562.     MUIA_HelpLine -- (V4 ) [ISG], LONG
  563.  
  564.     FUNCTION
  565.     Define a line in a help file specified with 
  566.     MUIA_Application_HelpFile.
  567.  
  568.     SEE ALSO
  569.     MUIA_Application_HelpFile, MUIA_HelpNode
  570. Notify.mui/MUIA_HelpNode
  571.  
  572.     NAME
  573.     MUIA_HelpNode -- (V4 ) [ISG], STRPTR
  574.  
  575.     FUNCTION
  576.     Define a node in a help file specified with
  577.     MUIA_Application_HelpFile.
  578.  
  579.     SEE ALSO
  580.     MUIA_Application_HelpFile, MUIA_HelpLine
  581. Notify.mui/MUIA_NoNotify
  582.  
  583.     NAME
  584.     MUIA_NoNotify -- (V7 ) [.S.], BOOL
  585.  
  586.     FUNCTION
  587.     If you set up a notify on an attibute to react on user input,
  588.     you will also recognize events when you change this attribute
  589.     under program control with SetAttrs(). Setting MUIA_NoNotify
  590.     together with your attribute will prevent this notification
  591.     from being triggered.
  592.  
  593.     NOTE
  594.     MUIA_NoNotify is a "one time" attribute. Its only valid during
  595.     the current SetAttrs() call!
  596.  
  597.     EXAMPLE
  598.     SetAttrs(slider,MUIA_NoNotify,TRUE,MUIA_Slider_Level,26,TAG_DONE);
  599. Notify.mui/MUIA_Revision
  600.  
  601.     NAME
  602.     MUIA_Revision -- (V4 ) [..G], LONG
  603.  
  604.     FUNCTION
  605.     Get the revision number of an objects class. Although
  606.     MUIA_Revision is documented at notify class, you will
  607.     of course receive the revision number of the objects true
  608.     class.
  609.  
  610.     EXAMPLE
  611.     strobj = MUI_NewObject(MUIC_String,...,TAG_DONE);
  612.         ...
  613.     get(strobj,MUIA_Version ,&v);
  614.     get(strobj,MUIA_Revision,&r);
  615.     printf("String class version %ld.%ld\n",v,r);
  616.  
  617.     SEE ALSO
  618.     MUIA_Version
  619. Notify.mui/MUIA_UserData
  620.  
  621.     NAME
  622.     MUIA_UserData -- (V4 ) [ISG], ULONG
  623.  
  624.     FUNCTION
  625.     A general purpose value to fill in any kind of information.
  626. Notify.mui/MUIA_Version
  627.  
  628.     NAME
  629.     MUIA_Version -- (V4 ) [..G], LONG
  630.  
  631.     FUNCTION
  632.     Get the version number of an objects class. Although
  633.     MUIA_Version is documented at notify class, you will
  634.     of course receive the version number of the objects true
  635.     class.
  636.  
  637.     EXAMPLE
  638.     strobj = MUI_NewObject(MUIC_String,...,TAG_DONE);
  639.         ...
  640.     get(strobj,MUIA_Version ,&v);
  641.     get(strobj,MUIA_Revision,&r);
  642.     printf("String class version %ld.%ld\n",v,r);
  643.  
  644.     SEE ALSO
  645.     MUIA_Revision
  646.